package com.ruoyi.appService.mentalTestList.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import java.util.Collections;
import java.util.List;

import com.ruoyi.appService.mentalTestList.domain.completeTest;
import com.ruoyi.appService.mentalTestList.mapper.ZUserMentaltestRelationMapper;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.framework.web.service.WxTokenService;
import com.ruoyi.framework.web.service.wxUserRedis;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.appService.mentalTestList.mapper.ZMentaltestMapper;
import com.ruoyi.appService.mentalTestList.domain.ZMentaltest;
import com.ruoyi.appService.mentalTestList.service.IZMentaltestService;

import javax.servlet.http.HttpServletRequest;

/**
 * 心理测试Service业务层处理
 *
 * @author anjiao
 * @date 2025-05-10
 */
@Service
public class ZMentaltestServiceImpl extends ServiceImpl<ZMentaltestMapper, ZMentaltest> implements IZMentaltestService {
    @Autowired
    private ZMentaltestMapper zMentaltestMapper;

    @Autowired
    private ZUserMentaltestRelationMapper zUserMentaltestRelationMapper;

    @Autowired
    private WxTokenService wxTokenService;

    /**
     * 查询心理测试
     *
     * @param id 心理测试主键
     * @return 心理测试
     */
    @Override
    public ZMentaltest selectZMentaltestById(Long id) {
        return zMentaltestMapper.selectZMentaltestById(id);
    }

    /**
     * 查询心理测试列表
     *
     * @param zMentaltest 心理测试
     * @return 心理测试
     */
    @Override
    public List<ZMentaltest> selectZMentaltestList(ZMentaltest zMentaltest) {
        return zMentaltestMapper.selectZMentaltestList(zMentaltest);
    }

    /**
     * 新增心理测试
     *
     * @param zMentaltest 心理测试
     * @return 结果
     */
    @Override
    public int insertZMentaltest(ZMentaltest zMentaltest) {
                zMentaltest.setCreateTime(DateUtils.getNowDate());
            return zMentaltestMapper.insertZMentaltest(zMentaltest);
    }

    /**
     * 修改心理测试
     *
     * @param zMentaltest 心理测试
     * @return 结果
     */
    @Override
    public int updateZMentaltest(ZMentaltest zMentaltest) {
        return zMentaltestMapper.updateZMentaltest(zMentaltest);
    }

    /**
     * 批量删除心理测试
     *
     * @param ids 需要删除的心理测试主键
     * @return 结果
     */
    @Override
    public int deleteZMentaltestByIds(Long[] ids) {
        return zMentaltestMapper.deleteZMentaltestByIds(ids);
    }

    /**
     * 删除心理测试信息
     *
     * @param id 心理测试主键
     * @return 结果
     */
    @Override
    public int deleteZMentaltestById(Long id) {
        return zMentaltestMapper.deleteZMentaltestById(id);
    }

    @Override
    public int[] selectCompletedTestList(HttpServletRequest request) {

//从请求头中获取token
        String token = wxTokenService.getToken(request);
//解析得到token得到键，想redis中查找对应的值，并返回
        wxUserRedis wxuserRedis = wxTokenService.getwxUser(token);
        int userId=wxuserRedis.getUserId();

        return zUserMentaltestRelationMapper.selectCompletedTestList(userId);
    }

    @Override
    public void insertCompletedTestList(int testId,  HttpServletRequest request) {

//从请求头中获取token
        String token = wxTokenService.getToken(request);
//解析得到token得到键，想redis中查找对应的值，并返回
        wxUserRedis wxuserRedis = wxTokenService.getwxUser(token);
        int userId=wxuserRedis.getUserId();

        zUserMentaltestRelationMapper.insertCompletedTestList(userId,testId);
    }



}